package AccionBoton;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.util.List;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JRootPane;

import modelUtil.Configuracion;
import modelUtil.Util;
import plantilla.AccionBotonTO;
import plantilla.PlantillaTO;
import usuario.usuarioTO.UsuarioTO;
import util.AccionesEjecutar;
import util.BotonPersonalizado;
import util.Reproductor;
import util.TecladoReal;
import fachadaPlantilla.delegate.PlantillaFacade;
import fachadaUsuario.delegate.UsuarioFacade;

public class AsignarAccion implements ActionListener {

	private BotonPersonalizado boton;
	private List<AccionBotonTO> acciones;
    private static boolean mayus = false;
    private static int s = -1;
    private static boolean primeraVez = false;
    private static int AltTab = 0;
    private TecladoReal _teclado;

	public AsignarAccion(BotonPersonalizado _boton,
			List<AccionBotonTO> _acciones, TecladoReal teclado) {

		boton = _boton;
		acciones = _acciones;
		_teclado = teclado;

	}

	public void actionPerformed(ActionEvent evt) {

		for (int i = 0; i < acciones.size(); i++) {

			if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_OOFF_W)) {

				getAccionOffice(acciones.get(i).getAccionConcreta(), acciones
						.get(i).getArgumentoAccion());

			} else {

				if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_MSO_WP)) {

					//getAccionWordPad(acciones.get(i).getAccionConcreta(),acciones.get(i).getArgumentoAccion());

				} else {

					if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_MS_IE)) {

						//getAccionExplorer(acciones.get(i).getAccionConcreta(), acciones.get(i).getArgumentoAccion());

					} else {

						if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_M_F)) {

							getAccionFirefox(acciones.get(i).getAccionConcreta(), acciones.get(i).getArgumentoAccion());

						} else {

							if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_AT)) {

								getAccionCargarTeclado(acciones.get(i).getAccionConcreta());

							} else {

								if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_LTR_O_PLB)) {
									getAccionEscribir(acciones.get(i).getAccionConcreta());

								} else {

									if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_VZ_Y_SND)) {

										getAccionVozSonido(acciones.get(i).getAccionConcreta(), acciones.get(i).getArgumentoAccion());

									} else {

										if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_TCL_ESP_TCT)) {
											getAccionTeclasEspeciales(acciones.get(i).getAccionConcreta());

										} else {

											if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_TCL_ESP_TC)) {

												getAccionTeclasEspeciales(acciones.get(i).getAccionConcreta());

											} 
											
											if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_TCL_ESP_TD)) {

												getAccionTeclasEspeciales(acciones.get(i).getAccionConcreta());

											} else {

												if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_APL)) {

													getAccionAplicaciones(acciones.get(i).getAccionConcreta(),acciones.get(i).getArgumentoAccion());

												} else {

													if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_CMNCDR)) {

														//getAccionComunicador(acciones.get(i).getAccionConcreta());

													} else {

														if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_MSN)) {

															getAccionMessenger(acciones.get(i).getAccionConcreta());

														} else {

															if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_CALC)) {

																getAccionCalculadora(acciones.get(i).getAccionConcreta());

															} else {

																if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_WMP)) {

																	//getAccionMediaPlayer(acciones.get(i).getAccionConcreta());

																} else {

																	if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_EXL)) {

																		//getAccionExcel(acciones.get(i).getAccionConcreta());

																	} else {

																		if (acciones.get(i).getGrupoAccion().equals(AccionesEjecutar.GA_PC)) {

																			getAccionPC(acciones.get(i).getAccionConcreta());

																		}

																	}
																}
															}
														}
													}
												}

											}

										}

									}

								}

							}

						}

					}

				}

			}

		}

	}

	public void getAccionOffice(String accionConcreta, String Argumento) {

		if (accionConcreta.equals(AccionesEjecutar.AC_ET_ABRIR)) {

			Util.launcher("ooffice","-writer");

		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_ET_CERRAR)) {

				Util.cerrarVentana();

			} else {

				if (accionConcreta.equals(AccionesEjecutar.AC_ET_ABRIR_DOC)) {

					Util.launcher("ooffice", Configuracion.instancia().getDirUsuarioActual() + Configuracion.instancia().getTecladoActual() + "//" + Argumento);

				} else {

					if (accionConcreta.equals(AccionesEjecutar.AC_ET_CERRAR_DOC)) {

						Vector<Integer> teclas = new Vector<Integer>();
						teclas.add(KeyEvent.VK_ALT);

						Util.teclearEspecial(teclas, "fc");


					} else {

						if (accionConcreta.equals(AccionesEjecutar.AC_ET_G)) {

							Vector<Integer> teclas = new Vector<Integer>();
							teclas.add(KeyEvent.VK_CONTROL);

							Util.teclearEspecial(teclas, "s");

						} else {

							if (accionConcreta.equals(AccionesEjecutar.AC_ET_G_COMO)) {

								Vector<Integer> teclas = new Vector<Integer>();
								teclas.add(KeyEvent.VK_CONTROL);
								teclas.add(KeyEvent.VK_SHIFT);

								Util.teclearEspecial(teclas, "s");

							} else {

								if (accionConcreta.equals(AccionesEjecutar.AC_ET_IMP)) {

									Vector<Integer> teclas = new Vector<Integer>();
									teclas.add(KeyEvent.VK_CONTROL);

									Util.teclearEspecial(teclas, "p");

								} else {

									if (accionConcreta.equals(AccionesEjecutar.AC_ET_CPR)) {

										Vector<Integer> teclas = new Vector<Integer>();
										teclas.add(KeyEvent.VK_CONTROL);

										Util.teclearEspecial(teclas, "c");
									} else {

										if (accionConcreta.equals(AccionesEjecutar.AC_ET_CRT)) {

											Vector<Integer> teclas = new Vector<Integer>();
											teclas.add(KeyEvent.VK_CONTROL);

											Util.teclearEspecial(teclas, "x");

										} else {

											if (accionConcreta.equals(AccionesEjecutar.AC_ET_PGR)) {

												Vector<Integer> teclas = new Vector<Integer>();
												teclas.add(KeyEvent.VK_CONTROL);

												Util.teclearEspecial(teclas,"v");

											} else {

												if (accionConcreta.equals(AccionesEjecutar.AC_ET_NEGRITA)) {

													Vector<Integer> teclas = new Vector<Integer>();
													teclas.add(KeyEvent.VK_CONTROL);

													Util.teclearEspecial(teclas, "b");

												} else {

													if (accionConcreta.equals(AccionesEjecutar.AC_ET_CURSIVA)) {

														Vector<Integer> teclas = new Vector<Integer>();
														teclas.add(KeyEvent.VK_CONTROL);

														Util.teclearEspecial(teclas, "i");

													} else {

														if (accionConcreta.equals(AccionesEjecutar.AC_ET_SUBRAYADO)) {

															Vector<Integer> teclas = new Vector<Integer>();
															teclas.add(KeyEvent.VK_CONTROL);

															Util.teclearEspecial(teclas,"u");

														} else {

															if (accionConcreta.equals(AccionesEjecutar.AC_ET_FF)) {

																Vector<Integer> teclas = new Vector<Integer>();
																teclas.add(KeyEvent.VK_ALT);

																Util.teclearEspecial(teclas,"oh");

															} else {
																if (accionConcreta.equals(AccionesEjecutar.AC_ET_FP)) {

																	Vector<Integer> teclas = new Vector<Integer>();
																	teclas.add(KeyEvent.VK_ALT);
																	Util.teclearEspecial(teclas,"oa");

																} else {

																}

															}

														}

													}

												}

											}

										}

									}

								}

							}

						}

					}

				}

			}

		}

	}

	public void getAccionWordPad(String accionConcreta, String Argumento) {

		if (accionConcreta.equals(AccionesEjecutar.AC_ET_ABRIR)) {

			Util.launcher("wordpad");

		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_ET_CERRAR)) {

				Util.cerrarVentana();

			} else {

				if (accionConcreta.equals(AccionesEjecutar.AC_ET_ABRIR_DOC)) {

					Util.launcher("wordpad", Configuracion.instancia().getDirUsuarioActual()
							+ Configuracion.instancia().getTecladoActual() + "//" + Argumento);

				} else {

					if (accionConcreta.equals(AccionesEjecutar.AC_ET_CERRAR_DOC)) {

						Vector<Integer> teclas = new Vector<Integer>();
						teclas.add(KeyEvent.VK_ALT);
						Util.teclearEspecial(teclas, "as");

					} else {

						if (accionConcreta.equals(AccionesEjecutar.AC_ET_G)) {

							Vector<Integer> teclas = new Vector<Integer>();
							teclas.add(KeyEvent.VK_CONTROL);
							Util.teclearEspecial(teclas, "g");

						} else {

							if (accionConcreta.equals(AccionesEjecutar.AC_ET_G_COMO)) {

								Vector<Integer> teclas = new Vector<Integer>();
								teclas.add(KeyEvent.VK_ALT);
								Util.teclearEspecial(teclas, "am");

							} else {

								if (accionConcreta.equals(AccionesEjecutar.AC_ET_IMP)) {

									Vector<Integer> teclas = new Vector<Integer>();
									teclas.add(KeyEvent.VK_CONTROL);

									Util.teclearEspecial(teclas, "p");

								} else {

									if (accionConcreta.equals(AccionesEjecutar.AC_ET_CPR)) {

										Vector<Integer> teclas = new Vector<Integer>();
										teclas.add(KeyEvent.VK_CONTROL);

										Util.teclearEspecial(teclas, "c");
									} else {

										if (accionConcreta.equals(AccionesEjecutar.AC_ET_CRT)) {

											Vector<Integer> teclas = new Vector<Integer>();
											teclas.add(KeyEvent.VK_CONTROL);

											Util.teclearEspecial(teclas, "x");

										} else {

											if (accionConcreta.equals(AccionesEjecutar.AC_ET_PGR)) {

												Vector<Integer> teclas = new Vector<Integer>();
												teclas.add(KeyEvent.VK_CONTROL);

												Util.teclearEspecial(teclas,"v");

											} else {

												if (accionConcreta.equals(AccionesEjecutar.AC_ET_NEGRITA)) {

													Vector<Integer> teclas = new Vector<Integer>();
													teclas.add(KeyEvent.VK_CONTROL);

													Util.teclearEspecial(teclas, "n");

												} else {

													if (accionConcreta.equals(AccionesEjecutar.AC_ET_CURSIVA)) {

														Vector<Integer> teclas = new Vector<Integer>();
														teclas.add(KeyEvent.VK_CONTROL);

														Util.teclearEspecial(teclas, "k");

													} else {

														if (accionConcreta.equals(AccionesEjecutar.AC_ET_SUBRAYADO)) {

															Vector<Integer> teclas = new Vector<Integer>();
															teclas.add(KeyEvent.VK_CONTROL);

															Util.teclearEspecial(teclas,"s");

														} else {
															if (accionConcreta.equals(AccionesEjecutar.AC_ET_FF)) {

																Vector<Integer> teclas = new Vector<Integer>();
																teclas.add(KeyEvent.VK_ALT);
																Util.teclearEspecial(teclas,"ff");

															} else {
																if (accionConcreta.equals(AccionesEjecutar.AC_ET_FP)) {

																	Vector<Integer> teclas = new Vector<Integer>();
																	teclas.add(KeyEvent.VK_ALT);
																	Util.teclearEspecial(teclas,"fp");
																} 

															}

														}

													}

												}

											}

										}

									}

								}

							}

						}

					}

				}

			}

		}
	}

	public void getAccionExplorer(String accionConcreta, String Argumento) {

		if (accionConcreta.equals(AccionesEjecutar.AC_I_ABRIR)) {

			if(Argumento!=""){
				
				Util.launcher("iexplore",Argumento);

			}else{
				
				Util.launcher("iexplore");
				
			}
			

		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_I_CERRAR)) {

				Util.cerrarVentana();

			} else {

				if (accionConcreta.equals(AccionesEjecutar.AC_I_URL)) {

					Vector<Integer> teclas = new Vector<Integer>();
					teclas.add(KeyEvent.VK_CONTROL);
					Util.teclearEspecial(teclas, "l");
					Util.teclearString(Argumento);
					teclas = new Vector<Integer>();
					teclas.add(KeyEvent.VK_ENTER);
					Util.teclearEspecial(teclas, "");
					
					

				} else {

					if (accionConcreta.equals(AccionesEjecutar.AC_I_PA)) {

						Vector<Integer> teclas = new Vector<Integer>();
						teclas.add(KeyEvent.VK_ALT);
						teclas.add(KeyEvent.VK_LEFT);

						Util.teclearEspecial(teclas, "");

					} else {

						if (accionConcreta.equals(AccionesEjecutar.AC_I_PS)) {

							Vector<Integer> teclas = new Vector<Integer>();
							teclas.add(KeyEvent.VK_ALT);
							teclas.add(KeyEvent.VK_RIGHT);

							Util.teclearEspecial(teclas, "");

						}
					}

				}

			}

		}

	}

	public void getAccionFirefox(String accionConcreta, String Argumento) {
		if (accionConcreta.equals(AccionesEjecutar.AC_I_ABRIR)) {

			if(Argumento!=""){
				
				Util.launcher("firefox",Argumento);

			}else{
				
				Util.launcher("firefox");
				
			}
			

		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_I_CERRAR)) {

				Util.cerrarVentana();

			} else {

				if (accionConcreta.equals(AccionesEjecutar.AC_I_URL)) {

					Vector<Integer> teclas = new Vector<Integer>();
					teclas.add(KeyEvent.VK_CONTROL);
					Util.teclearEspecial(teclas, "l");
					Util.teclearString(Argumento);
					teclas = new Vector<Integer>();
					teclas.add(KeyEvent.VK_ENTER);
					Util.teclearEspecial(teclas, "");
					
					

				} else {

					if (accionConcreta.equals(AccionesEjecutar.AC_I_PA)) {

						Vector<Integer> teclas = new Vector<Integer>();
						teclas.add(KeyEvent.VK_ALT);
						teclas.add(KeyEvent.VK_LEFT);

						Util.teclearEspecial(teclas, "");

					} else {

						if (accionConcreta.equals(AccionesEjecutar.AC_I_PS)) {

							Vector<Integer> teclas = new Vector<Integer>();
							teclas.add(KeyEvent.VK_ALT);
							teclas.add(KeyEvent.VK_RIGHT);

							Util.teclearEspecial(teclas, "");

						}
					}

				}

			}

		}

	}

	public void getAccionCargarTeclado(String accionConcreta) {

		PlantillaFacade fachada = new PlantillaFacade();
		UsuarioFacade fachadaUser = new UsuarioFacade();
		int indice = Configuracion.instancia().getDirUsuarioActual().lastIndexOf("//");
		String nombre = Configuracion.instancia().getDirUsuarioActual().substring(indice+2);
		
		UsuarioTO user = fachadaUser.BuscarUsuario(nombre);
		boolean barrido = false;
		int tiempoBarrido = 0;
		String barridoRequerido = user.getBarrido();
		if(barridoRequerido.equals("Si")){
			barrido = true;
			tiempoBarrido = (int) Math.floor( (new Double(user.getTiempoBarrido()) * 1000 ));
		}
		
		if(eTeclado(accionConcreta)){
			Configuracion.instancia().setTecladoActual(accionConcreta);
			JRootPane root = boton.getRootPane();
			JFrame ventana = (JFrame)root.getParent();
			PlantillaTO plantilla = fachada.RecuperarPlantilla(Configuracion.instancia().getDirUsuarioActual() + "//" + accionConcreta);
			new TecladoReal(ventana,plantilla, barrido, tiempoBarrido, true);
		
			
			
		}else{
			
			//falta esto
			
			
		}
		
	}
	


	public void getAccionEscribir(String accionConcreta) {

		
			Util.teclearString(accionConcreta);
			


	}

	public void getAccionVozSonido(String accionConcreta, String argumentoAccion) {

		if (accionConcreta.equals(AccionesEjecutar.AC_HABLAR)) {

			//Falta ésta
			
		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_REP_SON)) {
				try{
				Reproductor rep = new Reproductor();
				rep.loadFile(Configuracion.instancia().getDirUsuarioActual() + "//"+Configuracion.instancia().getTecladoActual() + "//" + argumentoAccion);
				rep.play();}catch(Exception e){
					
					e.printStackTrace();
					
				}
				
			

			}

		}

	}

	public void getAccionAplicaciones(String accionConcreta,
			String argumentoAccion) {

		//TODO cambiar esto
		if (accionConcreta.equals(AccionesEjecutar.AC_APL_E_ABRIR)) {

			
			/*if(Util.RecuperarExtension(argumentoAccion)!=""){
				
				Util.popup(0, "error");
				
			}else{*/
				try{
				Util.launcher(argumentoAccion);}catch(Exception e){
					Util.popup(0, "error");

					
				}

			//}
			/*File fichero = new File(argumentoAccion);
			Util.launcher(fichero.getAbsolutePath());*/
			
		} else {
			if (accionConcreta.equals(AccionesEjecutar.AC_APL_E_ABRIR_DOC)) {

				if(argumentoAccion.contains("_Separador_")){
					
					String[] cadenas = argumentoAccion.split("_Separador_");
					if(cadenas.length>1){

					Util.launcher(cadenas[0], Configuracion.instancia().getDirUsuarioActual() + "//" + Configuracion.instancia().getTecladoActual() + "//" + cadenas[1]);}else{
						
						Util.launcher(cadenas[0]);
					}
					
				}else{
				
				if(Util.RecuperarExtension(argumentoAccion)!=""){
					argumentoAccion = Configuracion.instancia().getDirUsuarioActual()+ "//" + Configuracion.instancia().getTecladoActual() + "//" + argumentoAccion;
				}
				/*File fichero = new File(argumentoAccion);
				Util.launcher(fichero.getAbsolutePath());*/
				//TODO revisar esta asignación de las acciones
				Util.launcher(argumentoAccion);
				}
			}else{
			

			if (accionConcreta.equals(AccionesEjecutar.AC_APL_E_CERRAR)) {

				Util.cerrarVentana();
			}
			}

		}

	}

	public void getAccionComunicador(String accionConcreta) {

		//Falta ésta
		
		if (accionConcreta.equals(AccionesEjecutar.AC_CMNCDR_ABRIR)) {

		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_CMNCDR_CERRAR)) {

			} else {

				if (accionConcreta.equals(AccionesEjecutar.AC_CMNCDR_LF)) {

				} else {

					if (accionConcreta.equals(AccionesEjecutar.AC_CMNCDR_LP)) {

					} else {

						if (accionConcreta
								.equals(AccionesEjecutar.AC_CMNCDR_LT)) {

						} else {

							if (accionConcreta
									.equals(AccionesEjecutar.AC_CMNCDR_GT)) {

							} else {

								if (accionConcreta
										.equals(AccionesEjecutar.AC_CMNCDR_CT)) {

								}

							}

						}

					}

				}

			}

		}

	}

	public void getAccionTeclasEspeciales(String accionConcreta) {

		String[] acciones = accionConcreta.split("\\+");
		Vector<Integer> teclas = new Vector<Integer>();
		String argumento = "";


		for (int i = 0; i < acciones.length; i++) {

			if (acciones[i].equals(AccionesEjecutar.AC_TLC_ESP_AB)) {

				if (s != -1) {

					teclas.add(s);
				}

				teclas.add(KeyEvent.VK_DOWN);

			} else {

				if (acciones[i].equals(AccionesEjecutar.AC_TLC_ESP_ALT)) {

					teclas.add(KeyEvent.VK_ALT);

				} else {

					if (acciones[i].equals(AccionesEjecutar.AC_TLC_ESP_ARRV)) {

						if (s != -1) {

							teclas.add(s);
						}

						teclas.add(KeyEvent.VK_UP);

					} else {

						if (acciones[i].equals(AccionesEjecutar.AC_TLC_ESP_AVP)) {

							teclas.add(KeyEvent.VK_PAGE_DOWN);

						} else {

							if (acciones[i]
									.equals(AccionesEjecutar.AC_TLC_ESP_BLQ_MAYSCLS)) {

								teclas.add(KeyEvent.VK_CAPS_LOCK);
							} else {

								if (acciones[i]
										.equals(AccionesEjecutar.AC_TLC_ESP_CTRL)) {

									teclas.add(KeyEvent.VK_CONTROL);

								} else {

									if (acciones[i]
											.equals(AccionesEjecutar.AC_TLC_ESP_DRCH)) {

										if (s != -1) {

											teclas.add(s);
										}

										teclas.add(KeyEvent.VK_RIGHT);

									} else {

										if (acciones[i]
												.equals(AccionesEjecutar.AC_TLC_ESP_ENTR)) {

											teclas.add(KeyEvent.VK_ENTER);

										} else {

											if (acciones[i]
													.equals(AccionesEjecutar.AC_TLC_ESP_ESC)) {

												teclas.add(KeyEvent.VK_ESCAPE);

											} else {

												if (acciones[i]
														.equals(AccionesEjecutar.AC_TLC_ESP_ESP)) {

													teclas
															.add(KeyEvent.VK_SPACE);

												} else {

													if (acciones[i]
															.equals(AccionesEjecutar.AC_TLC_ESP_FN)) {

														if (s != -1) {

															teclas.add(s);
														}

														teclas
																.add(KeyEvent.VK_END);

													} else {

														if (acciones[i]
																.equals(AccionesEjecutar.AC_TLC_ESP_IN)) {

															if (s != -1) {

																teclas.add(s);
															}

															teclas
																	.add(KeyEvent.VK_HOME);

														} else {

															if (acciones[i]
																	.equals(AccionesEjecutar.AC_TLC_ESP_INS)) {

																teclas
																		.add(KeyEvent.VK_INSERT);

															} else {

																if (acciones[i]
																		.equals(AccionesEjecutar.AC_TLC_ESP_IW)) {

																	teclas
																			.add(KeyEvent.VK_WINDOWS);

																} else {

																	if (acciones[i]
																			.equals(AccionesEjecutar.AC_TLC_ESP_IZ)) {

																		if (s != -1) {

																			teclas
																					.add(s);
																		}

																		teclas
																				.add(KeyEvent.VK_LEFT);

																	} else {

																		if (acciones[i]
																				.equals(AccionesEjecutar.AC_TLC_ESP_MAYSCLS)) {

																			teclas
																					.add(KeyEvent.VK_SHIFT);
																			mayus = true;

																		} else {

																			if (acciones[i]
																					.equals(AccionesEjecutar.AC_TLC_ESP_RET)) {

																				teclas
																						.add(KeyEvent.VK_BACK_SPACE);

																			} else {

																				if (acciones[i]
																						.equals(AccionesEjecutar.AC_TLC_ESP_RP)) {

																					teclas
																							.add(KeyEvent.VK_PAGE_UP);

																				} else {

																					if (acciones[i]
																							.equals(AccionesEjecutar.AC_TLC_ESP_SUP)) {

																						teclas
																								.add(KeyEvent.VK_DELETE);

																					} else {

																						if (acciones[i].equals(AccionesEjecutar.AC_TLC_ESP_TAB)) {

																							teclas.add(KeyEvent.VK_TAB);

																						} else {

																							if (acciones[i].equals(AccionesEjecutar.AC_TLC_ESP_SELECT)) {

																								if (!primeraVez) {
																									s = KeyEvent.VK_SHIFT;
																									boton.seleccionar();
																									primeraVez = true;
																								} else {
																									s = -1;
																									boton.deseleccionar();

																									primeraVez = false;
																								}

																							} else {

																								if (acciones[i].equals(AccionesEjecutar.AC_TLC_ESP_CERRAR_TECLADO)) {

																									Util.cerrarTeclado(_teclado);

																								} else {

																									if (acciones[i]
																											.equals("{F1}")) {

																										teclas
																												.add(KeyEvent.VK_F1);

																									} else {
																										if (acciones[i]
																												.equals("{F2}")) {

																											teclas
																													.add(KeyEvent.VK_F2);

																										} else {

																											if (acciones[i]
																													.equals("{F3}")) {

																												teclas
																														.add(KeyEvent.VK_F3);

																											} else {

																												if (acciones[i]
																														.equals("{F4}")) {

																													teclas
																															.add(KeyEvent.VK_F4);

																												} else {

																													if (acciones[i]
																															.equals("{F5}")) {

																														teclas
																																.add(KeyEvent.VK_F5);

																													} else {
																														if (acciones[i]
																																.equals("{F6}")) {

																															teclas
																																	.add(KeyEvent.VK_F6);

																														} else {

																															if (acciones[i]
																																	.equals("{F7}")) {

																																teclas
																																		.add(KeyEvent.VK_F7);

																															} else {

																																if (acciones[i]
																																		.equals("{F8}")) {

																																	teclas
																																			.add(KeyEvent.VK_F8);

																																} else {

																																	if (acciones[i]
																																			.equals("{F9}")) {

																																		teclas
																																				.add(KeyEvent.VK_F9);

																																	} else {
																																		if (acciones[i]
																																				.equals("{F10}")) {

																																			teclas
																																					.add(KeyEvent.VK_F10);

																																		} else {

																																			if (acciones[i]
																																					.equals("{F11}")) {

																																				teclas
																																						.add(KeyEvent.VK_F11);

																																			} else {

																																				if (acciones[i]
																																						.equals("{F12}")) {

																																					teclas
																																							.add(KeyEvent.VK_F12);

																																				} else {

																																					teclas = Util
																																							.ReconocerCodigo(
																																									acciones[i],
																																									teclas);

																																				}

																																			}

																																		}

																																	}

																																}

																															}

																														}

																													}

																												}

																											}

																										}

																									}

																								}

																							}

																						}

																					}

																				}

																			}

																		}

																	}

																}

															}

														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}

		if (teclas.size() > 0) {

			Util.teclearVector(teclas);

		}

	}

	public void getAccionMessenger(String accionConcreta) {

		if (accionConcreta.equals(AccionesEjecutar.AC_MSN_ABRIR)) {

			
			Util.launcher("pidgin");

		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_MSN_CERRAR)) {

				Util.cerrarVentana();
			}

		}

	}

	public void getAccionCalculadora(String accionConcreta) {

		if (accionConcreta.equals(AccionesEjecutar.AC_CALC_ABRIR)) {

			Util.launcher("gcalctool");

		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_CALC_CERRAR)) {

				Util.cerrarVentana();
			}

		}

	}

	public void getAccionMediaPlayer(String accionConcreta) {

		if (accionConcreta.equals(AccionesEjecutar.AC_WMP_ABRIR)) {

			Util.launcher("wmplayer");

		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_WMP_CERRAR)) {

				Util.cerrarVentana();
			}

		}

	}

	public void getAccionExcel(String accionConcreta) {

		if (accionConcreta.equals(AccionesEjecutar.AC_EXL_ABRIR)) {

			Util.launcher("excel");

		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_EXL_CERRAR)) {

				Util.cerrarVentana();
			}

		}

	}

	public void getAccionPC(String accionConcreta) {

		if (accionConcreta.equals(AccionesEjecutar.AC_PC_MIPC)) {
			//Util.launcher("cd");
			//Util.launcher("nautilus $HOME");
			Util.launcher("nautilus");


		} else {

			if (accionConcreta.equals(AccionesEjecutar.AC_PC_ADMIN)) {

				//Util.launcher("taskmgr");

			} else {

				if (accionConcreta.equals(AccionesEjecutar.AC_PC_EJEC)) {
/*
					Vector<Integer> teclas = new Vector<Integer>();
					teclas.add(KeyEvent.VK_WINDOWS);
					teclas.add(KeyEvent.VK_R);

					Util.teclearEspecial(teclas, "");*/
				} else {
					//Falta ésta
					if (accionConcreta.equals(AccionesEjecutar.AC_PC_MIMUSIC)) {
						//Util.launcher("nautilus $HOME/Música");
						Util.launcher("nautilus");

					} else {

						if (accionConcreta.equals(AccionesEjecutar.AC_PC_MISDOCS)) {

							//Util.launcher("nautilus $HOME/Documentos");
							Util.launcher("nautilus");

						} else {

							if (accionConcreta.equals(AccionesEjecutar.AC_PC_MISIMAGS)) {
								Util.launcher("nautilus");

								//Util.launcher("nautilus $HOME/Imágenes");

							} else {

								if (accionConcreta.equals(AccionesEjecutar.AC_PC_PNLCTRL)) {

									//Util.launcher("control");

								} else {

									if (accionConcreta.equals(AccionesEjecutar.AC_PC_PROPPAN)) {

										//Util.launcher("Desk.cpl");

									} else {

										if (accionConcreta.equals(AccionesEjecutar.AC_PC_BUSCVEN)) {
											Vector<Integer> teclas = new Vector<Integer>();
											teclas.add(KeyEvent.VK_ALT);
											teclas.add(KeyEvent.VK_TAB);
											Util.teclearVector(teclas);

											
											

										} else {
											

											if (accionConcreta.equals(AccionesEjecutar.GA_TERM)) {
												
												Util.launcher("gnome-terminal");
												

											}else{
												if (accionConcreta.equals(AccionesEjecutar.GA_REDIM)) {
													
													Util.redimensionarVentana();
													

												}
												
												
												
											}

	

										}

									}

								}

							}

						}

					}

				}

			}

		}

	}
	
	
	   public  boolean eTeclado(String teclado)
       {
           boolean existe = false;

           File dirTeclados = new File(Configuracion.instancia().getDirUsuarioActual() + "//");
           File[] archivos = dirTeclados.listFiles();

           for(int i=0;i<archivos.length;i++)
           {
               if (teclado.equals(archivos[i].getName())) existe = true;

           }
           return existe;
       }
	

}
